package com.duoduo.链表;

import com.duoduo.ListNode;

/**
 * @author dl.chai
 * @version 1.0
 * @description: 移除链表元素203
 * 题意：删除链表中等于给定值 val 的所有节点。
 *
 * 示例 1： 输入：head = [1,2,6,3,4,5,6], val = 6 输出：[1,2,3,4,5]
 *
 * 示例 2： 输入：head = [], val = 1 输出：[]
 *
 * 示例 3： 输入：head = [7,7,7,7], val = 7 输出：
 * @date 2023/5/17 20:44
 */

public class 移除链表元素203 {
    public ListNode removeElements(ListNode head, int val) {
        //处理头结点 删除值相同的头结点后，可能新的头结点也值相等，用循环解决
        while(head!=null && head.val==val){
            head=head.next;
        }
        if(head==null){
            return head;
        }
        ListNode curr=head;
        //确保当前结点后还有结点
        while(curr.next!=null){
            if(curr.next.val==val){
                curr.next=curr.next.next;
            }else{
                curr=curr.next;
            }
        }
        return head;
    }
}
